package itheima10;

import java.util.List;

/*
    定义Thread子类BaoZiPuThread,覆盖重写run方法,指定线程任务(包包子)

    包子铺: 包一个包子
    1.判断是否有包子
    2.有: 等待
    3.没有:
        3.1 包一个包子,存入集合中
        3.2 唤醒吃货吃包子
 */
public class BaoZiPuThread extends Thread {
    //定义成员变量,通过构造方法赋值
    private List<String> list;
    public BaoZiPuThread(String threadName,List<String> list) {
        //将线程名字传到父类，调用时会显示出来
        super(threadName);
        this.list = list;
    }
    @Override
    public void run() {
        int count = 1;//验证存和取的包子是否一致,给包子编号
        while (true) {
            synchronized (list) {
                //1.判断是否有包子
                if(list.size()==1) {
                    //2.有: 等待
                    try {
                        list.wait();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
                //3.没有:
                //3.1 包一个包子,存入集合中
                String bz = "包包子....."+count;
                count++;
                System.out.println("包子铺: "+Thread.currentThread().getName()+" 又包了一个: "+bz);
                //放到集合里，集合添加一个元素
                list.add(bz);

                //3.2 唤醒吃货吃包子
                list.notify();
            }
        }
    }
}
